const validate = {
  /**
   * 验证邮箱格式
   * @param {string} email - 邮箱地址
   * @returns {boolean} - 验证结果
   */
  isEmail: function (email) {
    const regex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/
    return regex.test(email)
  },

  /**
   * 验证手机号格式
   * @param {string} phone - 手机号
   * @returns {boolean} - 验证结果
   */
  isPhone: function (phone) {
    const regex = /^1[3456789]\d{9}$/
    return regex.test(phone)
  },

  /**
   * 验证密码强度
   * @param {string} password - 密码
   * @returns {boolean} - 验证结果
   */
  isStrongPassword: function (password) {
    const regex = /^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)[a-zA-Z\d]{8,}$/
    return regex.test(password)
  },

  /**
   * 验证是否为空
   * @param {string} str - 字符串
   * @returns {boolean} - 验证结果
   */
  isEmpty: function (str) {
    return !str || String(str).trim() === '' || String(str).trim() === 'null'
  },

  /**
   * 验证是否为数字
   * @param {string} num - 数字
   * @returns {boolean} - 验证结果
   */
  isNumber: function (num) {
    return !isNaN(parseFloat(num)) && isFinite(num)
  },
  /**
   * 验证分页参数
   */
  isPage: function (page, pageSize) {
    if (!validate.isNumber(page) || !validate.isNumber(pageSize)) {
      return false
    }
    return !(page < 1 || pageSize < 1)
  },
  /**
   * 判断对象是否为空、存在
   * @param {object} obj - 对象
   * @returns {boolean} - 判断结果 true:为空 false:存在
   */
  isEmptyObj: function (obj) {
    if (obj === null || obj === undefined) {
      return true
    }
    return Object.keys(obj).length === 0
  },
}

module.exports = validate
